package org.ccay.async.task.service.impl;

import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.ccay.async.task.ExportTaskVO;
import org.ccay.async.task.dao.IExportTaskDao;
import org.ccay.async.task.service.IExportTaskService;
import org.ccay.core.base.PageVO;
import org.ccay.core.base.PagedResult;
import org.ccay.core.exception.ApplicationException;
import org.ccay.core.log.CcayLoggerFactory;
import org.ccay.core.log.ILogger;
import org.ccay.core.util.DaoUtil;
import org.ccay.core.validator.Validate;
import org.springframework.context.annotation.Lazy;

/**
 * Task导出任务
 * 
 * @author chaowangbang
 * @since 2011-12-6
 */

@Named
@Lazy
public class ExportTaskService implements IExportTaskService {


	private static final ILogger logger = CcayLoggerFactory.getLogger(ExportTaskService.class);

	@Inject
	private IExportTaskDao exportDao;

	private static final String TASKEXPORT = "TaskExport";
	
	  /**
     * 导出监控操作
     */
     public static final String EXPORT_MONITOR="exportMonitor";
     /**
     * 导出监控操作描述
     */
     public static final String EXPORT_MONITOR_DESC="Export Monitor";

	@Validate
//	@Audit(module=" Excel ",operation="batch delete excel Export Task ",message="batch delete Export Task")
	public void deleteExportTaskList(List<ExportTaskVO> exportTaskVOs) throws ApplicationException {
		// 删除多条任务
		DaoUtil.assertEffected(exportDao.deleteExportTaskList(exportTaskVOs), TASKEXPORT);
	}

	@Validate
	public void deleteExportTask(ExportTaskVO exportTaskVO) throws ApplicationException {
		// 删除单条任务
		DaoUtil.assertEffected(exportDao.deleteExportTask(exportTaskVO), TASKEXPORT);
	}

	public ExportTaskVO findExportTaskById(int id) throws ApplicationException {
		// 查询单个任务
		ExportTaskVO exportTaskVO = new ExportTaskVO();
		exportTaskVO.setTaskId(id);
		return DaoUtil.assertExists(exportDao.findExportTaskById(exportTaskVO), TASKEXPORT);
	}

	@Validate
	public void createExportTask(ExportTaskVO exportTaskVO) throws ApplicationException {
		// 创建任务
		DaoUtil.assertEffected(exportDao.createExportTask(exportTaskVO), TASKEXPORT);
	}

	public List<ExportTaskVO> findModuleNameDistinct() {
		ExportTaskVO taskVO = new ExportTaskVO();
		// 查找任务类型
		return exportDao.findModuleNameDistinct(taskVO);
	}

	public List<ExportTaskVO> findMonitorModuleNameDistinct() {
		ExportTaskVO taskVO = new ExportTaskVO();
		// 查找任务类型
		return exportDao.findMonitorModuleNameDistinct(taskVO);
	}

	public PagedResult<ExportTaskVO> findExportTaskList(ExportTaskVO exportTaskVOs, PageVO pageVO)
			throws ApplicationException {
		return exportDao.findExportTaskList(exportTaskVOs, pageVO);
	}

	public PagedResult<ExportTaskVO> findExportTaskListFilter(ExportTaskVO exportTaskVOs, PageVO pageVO)
			throws ApplicationException {
		return exportDao.findExportTaskListFilter(exportTaskVOs, pageVO);

	}

	public PagedResult<ExportTaskVO> findExportTaskListMonitor(ExportTaskVO exportTaskVOs, PageVO pageVO)
			throws ApplicationException {
		return exportDao.findExportTaskListMonitor(exportTaskVOs, pageVO);
	}
	
	/**
	 * 更新导出任务状态和其他信息
	 */
	public void updateExportTask(ExportTaskVO exportTaskVO) throws ApplicationException {
		// 更新任务
		DaoUtil.assertEffected(exportDao.updateExportTask(exportTaskVO), TASKEXPORT);
	}

}
